function [allCfg] = PrachSequenceGen(allCfg)

    prach = allCfg.prach;
    L1 = prach.L1;
    rootSequenceNum = L1.rootSequenceNum;
    curPIDRootSequenceIdx = L1.curPIDRootSequenceIdx;
    rootSequence = L1.rootSequence;

    for i = 1:rootSequenceNum
        ZCSequence(i,:) = zadoffChuSeq(rootSequence(i),L1.seqLength);
        ZCSequenceFFT(i,:) = fft(ZCSequence(i,:));
    end

    circShift = L1.circShift;
    ZCSequenceCircShift = circshift(ZCSequence(curPIDRootSequenceIdx,:),circShift);

    curZCSequenceFFT = fft(ZCSequenceCircShift);

    prach.data.ZCSequence = ZCSequence;
    prach.data.curZCSequenceFFT = curZCSequenceFFT;
    prach.data.ZCSequenceCircShift = ZCSequenceCircShift;
    prach.data.ZCSequenceFFT = ZCSequenceFFT;

    if allCfg.plotEnable
        figure;
        plot(ZCSequence);
        title('Zadoff-Chu Sequence');
        savefig(gcf, 'Zadoff-Chu Sequence.fig');
        figure;
        plot(ZCSequenceFFT);
        title('Zadoff-Chu Sequence FFT');
        savefig(gcf, 'Zadoff-Chu Sequence FFT.fig');
        figure;
        plot(ZCSequenceCircShift);
        title('Zadoff-Chu Sequence Circular Shift');
        savefig(gcf, 'Zadoff-Chu Sequence Circular Shift.fig');

    end
end
